The present invention relates generally to a technique for printing a job written in a printer page description language and more specifically to a multi-process/multi-stage decomposer adapted to decompose higher level primitives into imaging primitives for printing.
Personal computers have become commonplace on the desks of most office workers. Typically, much of the work product of such computers is intended to be transformed into hardcopy via a printer using digital imaging technology. A typical printer configuration for this purpose comprises a dedicated printer coupled to the personal computer ("PC"). However, printers used for this purpose are typically small laser printers which have limited functions and features such as a limited tray capacity which restricts the number and types of copy sheets that can be used to make prints on, or which do not have a finishing capability, etc.
On the other hand, larger high speed laser printers normally have a great deal of finishing and copy sheet capability which would allow the PC user to have, for example, custom printing and finishing of his work product, an option which for many PC users would be highly desirable. In practice, the PCs can be used advantageously with a network printing system of the type combining a number of client inputs, such as the PCs, or the like, and one or more printer outputs. In one example of such network printing systems, a client at one of the inputs sends electronic documents that comprise a job over a local area network (LAN) to one of the printers selected for printing of the job. In particular, LANs provide a means by which users running dedicated processors are able to share resources such as printers, file servers and scanners. Integration of shared resources has been a problem addressed by LAN managers. LAN managers have made different network protocols transparent to devices running different network protocols LANs also have a variety of print drivers emitting different page description languages (PDLs), which are directed to specific print devices.
A PDL, such as Interpress provided by Xerox.RTM. Corp. permits arithmetic computation, conditional execution, and procedure definition, in addition to special operations that construct a page image. Typically, a PDL supports imaging characters in a variety of fonts, faces, sizes and orientations, as well as line art, graphics and pictorial images. Because it is a language, the PDL describes a document in terms of software, the software being used to generate primitives that can be imaged onto a substrate with a marking engine. Further information regarding Interpress can be found in the following reference, the pertinent portions of which are incorporated herein by reference:
Harrington, S. J. and Buckley, R. R. PA0 Interpress: The Source Book PA0 Simon & Schuster, Inc. PA0 New York, N.Y. PA0 1988
While the use of a PDL to store and transmit an input document is desirable for several reasons, such use can complicate printing since much effort must be expended by the printer in converting the PDL of the input document into hardware imaging primitives that actually produce the print. In particular, an input format of an input document written in a PDL contains primitives that are at a "higher level" than the imaging primitives, so that the input document must be "taken apart" into its individual imaging components with a decomposing technique or the like. Preferably, a decomposer, with one or more processors and suitable software, is employed to implement the technique.
In operation, the decomposer executes the PDL to generate the imaging primitives. The types of operations required to perform this task include binding of the printer fonts to the requested fonts, any imaging processing on pictorial information, and/or converting line art/graphics to lower level imaging primitives. This process has historically taken much longer than the actual imaging, resulting in loss of throughput. It would therefore be desirable to provide a decomposer that minimizes the amount of time required to perform decomposing functions and, correspondingly, maximizes output.